-
Notifications
You must be signed in to change notification settings - Fork 99
chore: update requirements files for latest possible python versions #3739
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files🚀 New features to boost your workflow:
|
|
The documentation preview is ready to be viewed at http://preview.awkward-array.org.s3-website.us-east-1.amazonaws.com/PR3739 |
|
Since Ianna is on vacation and it's a non-controversial change, I'd say you can go ahead and merge it. |
ianna
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Both pandas and pyarrow frequently introduce breaking changes, especially around I/O behavior, column projection, and nested data handling. These changes can affect not only our documentation builds, but also our tests, examples, user workflows, and downstream integrations. To avoid unexpected breakages across the entire project, I suggest we take a more cautious approach to version bumps: pin or tightly constrain these dependencies, and test upgrades thoroughly before adopting them. This will help maintain stability and reproducibility across the whole ecosystem.
| jax[cpu]>=0.2.15;sys_platform != "win32" | ||
| numba>=0.50.0;sys_platform != "win32" and python_version < "3.14" | ||
| numexpr>=2.7 | ||
| pandas>=0.24.0;sys_platform != "win32" | ||
| pyarrow>=12.0.0;sys_platform != "win32" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ikrommyd - have you checked which versions of the packages are pulled in with these relaxed conditions? Thanks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well the latest on my system naturally. So that would be pyarrow 22 for example.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The restriction was only on the Python version, not on package versions. These were just in place because there where no wheels for 3.13/3.14 at the time, so it made sense to remove them. We could additionally add an upper bound on package versions if you think they are needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah for 3.15 I guess for when that comes out. We will touch this file again to remove the numba restriction too so it can be done then.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The restriction was only on the Python version, not on package versions. These were just in place because there where no wheels for 3.13/3.14 at the time, so it made sense to remove them. We could additionally add an upper bound on package versions if you think they are needed.
That was my question - have the changes been tested locally? Thanks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, locally, and most importantly, they're also being tested in the CI. We added this so that the integration tests (which I'm working on in scikit-hep/integration-tests#13) were a bit more comprehensive.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here's the log with 3.13 and then with 3.14 for reference if you want it on fresh environments.
~ via v0.56.0
❯ uv venv -p3.13
Using CPython 3.13.9 interpreter at: /opt/homebrew/opt/[email protected]/bin/python3.13
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
~ via v0.56.0
❯ source .venv/bin/activate
~ via v3.13.9 (iason) via v0.56.0
❯ cd awkward
/Users/iason/work/pyhep_dev/awkward
awkward on main [?] is v2.8.10 via v3.13.9 (iason)
❯ uv pip install -r requirements-test-full.txt
Using Python 3.13.9 environment at: /Users/iason/.venv
Resolved 31 packages in 1.13s
Prepared 7 packages in 6.26s
Installed 31 packages in 245ms
+ awkward==2.8.10
+ awkward-cpp==50
+ coverage==7.12.0
+ cramjam==2.11.0
+ execnet==2.1.2
+ fsspec==2025.10.0
+ iniconfig==2.3.0
+ jax==0.8.1
+ jaxlib==0.8.1
+ llvmlite==0.45.1
+ ml-dtypes==0.5.4
+ numba==0.62.1
+ numexpr==2.14.1
+ numpy==2.3.5
+ opt-einsum==3.4.0
+ packaging==25.0
+ pandas==2.3.3
+ pluggy==1.6.0
+ pyarrow==22.0.0
+ pygments==2.19.2
+ pytest==9.0.1
+ pytest-cov==7.0.0
+ pytest-xdist==3.8.0
+ python-dateutil==2.9.0.post0
+ pytz==2025.2
+ safetensors==0.7.0
+ scipy==1.16.3
+ six==1.17.0
+ tzdata==2025.2
+ uproot==5.6.8
+ xxhash==3.6.0
awkward on main [?] is v2.8.10 via v3.13.9 (iason) took 7s
❯ deactivate
awkward on main [?] is v2.8.10 via v3.14.0
❯ cd
~ via v0.56.0
❯ rm -rf .venv
~ via v0.56.0
❯ uv venv -p3.14
Using CPython 3.14.0 interpreter at: /opt/homebrew/opt/[email protected]/bin/python3.14
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
~ via v0.56.0
❯ source .venv/bin/activate
~ via v3.14.0 (iason) via v0.56.0
❯ cd awkward
/Users/iason/work/pyhep_dev/awkward
awkward on main [?] is v2.8.10 via v3.14.0 (iason)
❯ uv pip install -r requirements-test-full.txt
Using Python 3.14.0 environment at: /Users/iason/.venv
Resolved 29 packages in 181ms
Prepared 6 packages in 2.79s
Installed 29 packages in 160ms
+ awkward==2.8.10
+ awkward-cpp==50
+ coverage==7.12.0
+ cramjam==2.11.0
+ execnet==2.1.2
+ fsspec==2025.10.0
+ iniconfig==2.3.0
+ jax==0.8.1
+ jaxlib==0.8.1
+ ml-dtypes==0.5.4
+ numexpr==2.14.1
+ numpy==2.3.5
+ opt-einsum==3.4.0
+ packaging==25.0
+ pandas==2.3.3
+ pluggy==1.6.0
+ pyarrow==22.0.0
+ pygments==2.19.2
+ pytest==9.0.1
+ pytest-cov==7.0.0
+ pytest-xdist==3.8.0
+ python-dateutil==2.9.0.post0
+ pytz==2025.2
+ safetensors==0.7.0
+ scipy==1.16.3
+ six==1.17.0
+ tzdata==2025.2
+ uproot==5.6.8
+ xxhash==3.6.0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for approving and merging this PR - it’s good to see Awkward moving toward Python 3.14 compatibility. At the same time, Numba features are critical for many workflows, and users may be confused if they upgrade and find those features unavailable. To avoid surprises, could we add a clear compatibility notice and CI safeguards for Python 3.14? And for future PRs that affect core dependencies or Python version support, let’s agree to discuss them before merging, so we balance flexibility with reproducibility.
As far as I'm aware, jax, numexpr, pandas, and pyarrow all have 3.14 wheels. Numba only has them in pre-release at the time of writing. The requirements files should be updated accordingly